home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
Other Langs
/
Parallaxis_20
/
rot.z
< prev
next >
Wrap
Text File
|
1991-05-02
|
7KB
|
214 lines
START
16 PE
4 PORTS
SCALAR I4 4( I4 ) I4 B1
VECTOR I2 I5 B3
1 : GOTO 22;
2 : PROC 1 VECTOR I1;
POPV VI1:1;
VI[VI1:1] := 0;
PUSHV VI1:1;
RETURN;
3 : PROC 1;
ERROR "value out of range";
RETURN;
4 : PROC 1;
ERROR "division by 0";
RETURN;
5 : PROC 1
SCALAR
VECTOR I3 I1; group number 1
PUSHV ADDR VI1:3;
6 : VI1:1 := ID - 1; for PIC calculating DIMi
VI1:2 := VI1:1 MOD 4; DIM2
VI1:1 := VI1:1 / 4; DIM1
7 : VI1:3 := VI1:1 * 4;
8 : VI1:4 := VI1:2 + 1;
9 : VI1:3 := VI1:3 + VI1:4;
VI1:3 := VI1:3 + 1;
IF VI1:1 < 0 CALL 2;
IF VI1:1 > 3 CALL 2;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 3 CALL 2;
CONNECT 1 TO 2 AT VI1:3;
10 : VI1:3 := VI1:1 * 4;
11 : VI1:4 := VI1:2 - 1;
12 : VI1:3 := VI1:3 + VI1:4;
VI1:3 := VI1:3 + 1;
IF VI1:1 < 0 CALL 2;
IF VI1:1 > 3 CALL 2;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 3 CALL 2;
CONNECT 2 TO 1 AT VI1:3;
13 : VI1:4 := VI1:1 + 1;
14 : VI1:3 := VI1:4 * 4;
15 : VI1:3 := VI1:3 + VI1:2;
VI1:3 := VI1:3 + 1;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 3 CALL 2;
IF VI1:2 < 0 CALL 2;
IF VI1:2 > 3 CALL 2;
CONNECT 3 TO 4 AT VI1:3;
16 : VI1:4 := VI1:1 - 1;
17 : VI1:3 := VI1:4 * 4;
18 : VI1:3 := VI1:3 + VI1:2;
VI1:3 := VI1:3 + 1;
IF VI1:4 < 0 CALL 2;
IF VI1:4 > 3 CALL 2;
IF VI1:2 < 0 CALL 2;
IF VI1:2 > 3 CALL 2;
CONNECT 4 TO 3 AT VI1:3;
19 : POPV VI1:3;
20 : RETURN; group number : 1
21 : PROC 1; configuration : PIC
VI0:1 := ID - 1; for PIC calculating DIMi
VI0:2 := VI0:1 MOD 4; DIM2
VI0:1 := VI0:1 / 4; DIM1
RETURN; configuration : PIC
22 : CALL 5; connections
23!20 : SI0:1 := 4; line 20 column 2
24!22 : SI0:3 := 1; line 22 column 2
25 : SI0:21 := 4;
26!22 : IF SI0:3 > SI0:21 GOTO 44; line 22 column 2
27!23 : SI0:4 := 1; line 23 column 4
28 : SI0:22 := 4;
29!23 : IF SI0:4 > SI0:22 GOTO 42; line 23 column 4
30!24 : IF SI0:3 < 1 CALL 3; line 24 column 6
31 : IF 4 < SI0:3 CALL 3;
32 : IF SI0:4 < 1 CALL 3;
33 : IF 4 < SI0:4 CALL 3;
34 : SI0:23 := ADDR SI0:5 - SIZE( I4 I1 );
35 : SI0:24 := SI0:4 * SIZE( I1 );
36 : SI0:23 := SI0:23 + SI0:24;
37 : SI0:24 := SI0:3 * SIZE( I4 );
38 : SI0:23 := SI0:23 + SI0:24;
39 : SI[SI0:23] := 0;
40 : SI0:4 := SI0:4 + 1;
41 : GOTO 29;
42 : SI0:3 := SI0:3 + 1;
43 : GOTO 26;
44!27 : SI0:3 := 1; line 27 column 2
45 : SI0:21 := 4;
46!27 : IF SI0:3 > SI0:21 GOTO 59; line 27 column 2
47!27 : IF SI0:3 < 1 CALL 3; line 27 column 24
48 : IF 4 < SI0:3 CALL 3;
49 : IF SI0:3 < 1 CALL 3;
50 : IF 4 < SI0:3 CALL 3;
51 : SI0:22 := ADDR SI0:5 - SIZE( I4 I1 );
52 : SI0:23 := SI0:3 * SIZE( I1 );
53 : SI0:22 := SI0:22 + SI0:23;
54 : SI0:23 := SI0:3 * SIZE( I4 );
55 : SI0:22 := SI0:22 + SI0:23;
56 : SI[SI0:22] := SI0:3;
57 : SI0:3 := SI0:3 + 1;
58 : GOTO 46;
59!30 : CALL 21; line 30 column 2
60 : LOAD VI0:3 WITH SI0:5;
61 : GOTO 164; line 32 column 2
62!33 : SI0:2 := SI0:1 / 2; line 33 column 4
63!34 : CALL 21; line 34 column 4
64!35 : IF SI0:1 = 0 CALL 4; line 35 column 6
65 : VI0:7 := VI0:1 MOD SI0:1;
66!36 : IF SI0:1 = 0 CALL 4; line 36 column 6
67 : VI0:6 := VI0:2 MOD SI0:1;
68!38 : VI0:4 := VI0:3; line 38 column 6
69!39 : VB0:1 := VI0:6 < SI0:2; line 39 column 6
70 : VB0:2 := TRUE;
71 : IF VB0:1 CALL 88;
72 : IF VB0:2 CALL 74;
73 : GOTO 103;
74 : PROC 1;
75!41 : IF SI0:2 > 0 GOTO 77; line 41 column 24
76 : ERROR "number must be positive";
77 : SI0:21 := 0;
78 : PROPAGATE VI0:4 OUT 4 IN 3;
79 : SI0:21 := SI0:21 + 1;
80 : IF SI0:21 < SI0:2 GOTO 78;
81!42 : VB0:1 := VI0:7 < SI0:2; line 42 column 24
82 : IF VB0:1 CALL 84;
83 : GOTO 87;
84 : PROC 1;
85!42 : VI0:5 := VI0:4; line 42 column 41
86 : RETURN;
87 : RETURN;
88 : PROC 1;
89 : VB0:2 := FALSE;
90!39 : IF SI0:2 > 0 GOTO 92; line 39 column 24
91 : ERROR "number must be positive";
92 : SI0:21 := 0;
93 : PROPAGATE VI0:4 OUT 3 IN 4;
94 : SI0:21 := SI0:21 + 1;
95 : IF SI0:21 < SI0:2 GOTO 93;
96!40 : VB0:3 := VI0:7 >= SI0:2; line 40 column 24
97 : IF VB0:3 CALL 99;
98 : GOTO 102;
99 : PROC 1;
100!40 : VI0:5 := VI0:4; line 40 column 41
101 : RETURN;
102 : RETURN;
103!45 : VI0:4 := VI0:3; line 45 column 6
104!46 : VB0:2 := VI0:7 < SI0:2; line 46 column 6
105 : VB0:1 := TRUE;
106 : IF VB0:2 CALL 123;
107 : IF VB0:1 CALL 109;
108 : GOTO 138;
109 : PROC 1;
110!48 : IF SI0:2 > 0 GOTO 112; line 48 column 24
111 : ERROR "number must be positive";
112 : SI0:21 := 0;
113 : PROPAGATE VI0:4 OUT 1 IN 2;
114 : SI0:21 := SI0:21 + 1;
115 : IF SI0:21 < SI0:2 GOTO 113;
116!49 : VB0:2 := VI0:6 >= SI0:2; line 49 column 24
117 : IF VB0:2 CALL 119;
118 : GOTO 122;
119 : PROC 1;
120!49 : VI0:5 := VI0:4; line 49 column 41
121 : RETURN;
122 : RETURN;
123 : PROC 1;
124 : VB0:1 := FALSE;
125!46 : IF SI0:2 > 0 GOTO 127; line 46 column 24
126 : ERROR "number must be positive";
127 : SI0:21 := 0;
128 : PROPAGATE VI0:4 OUT 2 IN 1;
129 : SI0:21 := SI0:21 + 1;
130 : IF SI0:21 < SI0:2 GOTO 128;
131!47 : VB0:3 := VI0:6 < SI0:2; line 47 column 24
132 : IF VB0:3 CALL 134;
133 : GOTO 137;
134 : PROC 1;
135!47 : VI0:5 := VI0:4; line 47 column 41
136 : RETURN;
137 : RETURN;
138!52 : VI0:3 := VI0:5; line 52 column 6
139!54 : SI0:1 := SI0:2; line 54 column 4
140!56 : CALL 21; line 56 column 4
141 : STORE VI0:3 TO SI0:5;
142!58 : WRITE EOL; line 58 column 4
143!59 : SI0:3 := 1; line 59 column 4
144 : SI0:21 := 4;
145!59 : IF SI0:3 > SI0:21 GOTO 164; line 59 column 4
146!60 : SI0:4 := 1; line 60 column 6
147 : SI0:22 := 4;
148!60 : IF SI0:4 > SI0:22 GOTO 161; line 60 column 6
149!61 : IF SI0:3 < 1 CALL 3; line 61 column 8
150 : IF 4 < SI0:3 CALL 3;
151 : IF SI0:4 < 1 CALL 3;
152 : IF 4 < SI0:4 CALL 3;
153 : SI0:23 := ADDR SI0:5 - SIZE( I4 I1 );
154 : SI0:24 := SI0:4 * SIZE( I1 );
155 : SI0:23 := SI0:23 + SI0:24;
156 : SI0:24 := SI0:3 * SIZE( I4 );
157 : SI0:23 := SI0:23 + SI0:24;
158 : WRITE SI[SI0:23] 2;
159 : SI0:4 := SI0:4 + 1;
160 : GOTO 148;
161!63 : WRITE EOL; line 63 column 6
162 : SI0:3 := SI0:3 + 1;
163 : GOTO 145;
164!32 : SB0:1 := SI0:1 > 1; line 32 column 2
165 : IF SB0:1 GOTO 62;
166 : END; IMAGE_ROTATION
STOP